<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
"http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Style-Type" content="text/css">
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <meta name="Author" content="Florian Kirsch">
  <meta name="KeyWords" content="OpenCSG, CSG, image-based, image-based CSG, rendering, SCS, Goldfeather, OpenGL">

  <title>OpenCSG - News</title>
  <link rel="shortcut icon" href="http://www.opencsg.org/favicon.ico" type="image/ico">
</head>

<body style="font-family: verdana,arial,sans-serif; background-color: white;">

<table cellpadding="10" cellspacing="0" border="0">
 <tbody>
  <tr><td><img src="img/logo.gif" alt="OpenCSG logo"></td>
   <td width="480" style="text-align: center;">
     <h1> OpenCSG - News </h1>
     <b>
     <a href="index.html">Back to main page</a> &nbsp;&nbsp;
     </b>
   </td>
   <td><img src="img/ogl.gif" alt="OpenGL logo"></td>
  </tr>
 </tbody>
</table>

<hr>

<h3>18-Sep-2017: OpenCSG on github</h3>

<p>
I've uploaded the OpenCSG git repository to <a href="https://github.com/floriankirsch/OpenCSG">github</a>.
</p>

<h3>29-Sep-2016: OpenCSG 1.4.2 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.4.2.tar.gz">OpenCSG 1.4.2</a> fixes
an issue when the calling application renders into different frame buffer
objects subsequently and uses OpenCSG. In this case, when called for the second
time with the second FBO active, OpenCSG did not restore that FBO, but the first
FBO that was active for a previous call of OpenCSG. This caused, for example,
issues in applications rendering into a QOpenGLWidget with Qt 5, such as
OpenSCAD. When resizing the OpenGL window, the problem occured, and the OpenGL
window was not rendered at all anymore.
</p>

<h3>11-Sep-2016: OpenCSG 1.4.1 released</h3>

<p>
On Intel graphics hardware, the new rendering path in the SCS algorithm
in OpenCSG 1.4.0 entirely failed to work. This was apparently due to an
incompatibility of the fragment program with the fixed function pipeline
used at the vertex stage. <a href="http://www.opencsg.org/OpenCSG-1.4.1.tar.gz">OpenCSG 1.4.1</a>
implements a workaround: a vertex program is now used instead. I hope that
the rendering bugs on Intel graphics hardware are now really a thing of the past.
</p>

<h3>15-Sep-2014: OpenCSG 1.4.0 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.4.0.tar.gz">OpenCSG 1.4.0</a>
contains a bug fix for rendering CSG expressions with more than 255 primitives.
For the layered Goldfeather algorithm, this number of primitives could cause an
endless loop before. In the case of the SCS algorithm, there were rendering
errors with older versions.
</p>

<p>
For the SCS algorithm, the fix contains a new rendering path: using a
fragment program, a kind of alpha test is performed based
on all the components (r, g, b, a) of a fragment. This allows, in theory,
to distinguish 2^32 - 1 primitives instead of 2^8 - 1 before. This new
rendering path should be, in theory, also more stable than the old one,
and some rendering problems reported for Intel graphics hardware might
be solved with the new version.
</p>

<h3>11-May-2014: OpenCSG 1.3.3 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.3.3.tar.gz">OpenCSG 1.3.3</a>
is a maintenance release, providing minor portability improvements and
bug fixes. In particular, OpenCSG should now compile out-of-the-box on
Linux x64 systems.
</p>

<h3>02-Dec-2011: OpenCSG 1.3.2 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.3.2.tar.gz">OpenCSG 1.3.2</a>
is a maintenance release. It contains fixes for a number of errors
when setting up frame buffer objects or PBuffers with unusual combinations
of available OpenGL extensions. Furthermore, the calling application may
now render into a frame buffer object when calling OpenCSG. This failed
with former versions because OpenCSG did not switch back to the original
frame buffer object. The release also contains a couple of compilation fixes
for MacOS X.
</p>

<h3>09-Jun-2010: OpenCSG 1.3.1 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.3.1.tar.gz">OpenCSG 1.3.1</a>
was mainly released for a slight change of the license: The GPL license
contains a special linking exception for the
<a href="http://www.cgal.org">CGAL library</a> now. This means that
you are now allowed to link OpenCSG with CGAL and ship the binaries,
as long as you follow the requirements of the GPLv2 in regard to
all of the software in the executable aside from CGAL.
</p>

<p>
Aside from some dead code removed, there were no source code changes
in this release.
</p>

<h3>07-Feb-2010: OpenCSG 1.3.0 with support for MDI applications</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.3.0.tar.gz">OpenCSG 1.3.0</a>
implements better support for applications having an multiple document
interface and, therefore, use OpenCSG in different OpenGL windows.
If the contexts of these windows are not shared, older versions of
OpenCSG render incorrectly, because internally allocated PBuffers
resp. frame buffer objects, that are not reallocated for each frame,
are not valid in the different OpenGL contexts.
</p>

<p>
To solve this, new functions for setting/getting an OpenCSG context
have been added. OpenGL resources are created and reused by the
<b><code>render()</code></b> function per context. By setting a
different OpenCSG context for each OpenGL window before using
OpenCSG, CSG rendering is performed correctly.
</p>

<h3>03-Jan-2010: OpenCSG 1.2.0 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.2.0.tar.gz">OpenCSG 1.2.0</a>
contains fixes for CSG rendering using the frame buffer object extension.
In particular, it adds support for the ARB variant of this extension
(before, only the EXT variant was supported). 
</p>

<p>
Since the new version now uses frame buffer objects
as default, in contrast to the pbuffer code path in former versions,
there is the potential possibility that the pbuffer path might
work ok, but the (now default) frame buffer object path would fail. 
In that case, try to set the <b><code>OffscreenSetting</code></b>
to <b><code>PBuffer</code></b> using <b><code>setOption()</code></b>.
</p>

<p>
OpenCSG 1.2.0 also contains a small API cleanup. Whilst the old
<b><code>render()</code></b> function taking three arguments is 
still provided for backward compatibility, there is a new 
<b></code>render()</code></b> function that only takes the list
of primitives to render as argument. The other two arguments
setting some rendering options are now consistently expected to be
set using the <b><code>setOption()</code></b> interface.
</p>

<h3>19-Jul-2009: OpenCSG 1.1.1 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.1.1.tar.gz">OpenCSG 1.1.1</a>
is a maintenance release. Issues in the makefiles for Linux
and portability problems for 64-bit Linux have been resolved. Additionally,
a performance problem was fixed in the case of lots of CSG primitives
(several 10000s) with standard bounding boxes. Rendering this is slow
anyways, but before, the rendering time was dominated by the computation
time for generating the batches of primitives. This was, without bounding boxes,
wasted time, because the batches are trivial anyways. 
</p>

<h3>03-Dec-2006: OpenCSG 1.1.0 with Frame Buffer Object Support</h3>

<p>
The most significant addition in <a href="http://www.opencsg.org/OpenCSG-1.1.0.tar.gz">OpenCSG-1.1.0</a> is the support of OpenGL frame buffer objects. This
change also led to the option setter and getter functions to control this
and all other rendering options. Additionally several bugs have been fixed,
for example in the heuristics that choses the offscreen buffer size and
rendering errors that occured on some low-end graphics hardware.
</p>

<h3>03-Jul-2005: FREENIX 2005 Paper on OpenCSG</h3>

<p>
Since some time, the paper is available for download at directly from 
<a href="http://www.usenix.org/events/usenix05/tech/freenix/kirsch.html"> 
USENIX</a> (which requires a USENIX account for some time), or
<a href="publications.html#freenix">
here</a>, where also my talk can be downloaded.
</p>

<h3>18-Dec-2004: To appear: FREENIX 2005 Paper on OpenCSG</h3>

<p>
I am going to present the paper <strong><a href="publications.html#freenix">
OpenCSG: A Library for Image-Based CSG Rendering</a></strong> 
on the <a href="http://www.usenix.org/events/usenix05/cfp/freenix.html">FREENIX Track</a>
 of the <a href="http://www.usenix.org/events/usenix05">USENIX Annual Technical Conference 2005</a>
 in Anaheim, Californien.
This paper contains a short description of the Goldfeather and the SCS algorithm. It then
explains how (and why so) the API of OpenCSG was designed, outlines the basic implementation
and problems encountered during the implementation. Finally it describes some examples of
its use.
</p>

<h3>04-Dec-2004: OpenCSG version 1.0.2 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.0.2.zip">OpenCSG-1.0.2</a> provides a workspace
for the free, gcc-based <a href="http://www.bloodshed.net/devcpp.html">Dev-C++ 5</a>
compiler for Windows. Additionally it fixes two bugs, one in the
RenderTexture library, and one bug in the heuristic for choosing
the CSG rendering algorithm, which caused that, under circumstances,
a non-optimal rendering algorithm was used.
</p>

<h3>27-Sep-2004: OpenCSG version 1.0.1 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.0.1.zip">
OpenCSG-1.0.1</a> contains the following changes:
</p>
<p>
The settings of the OpenGL scissor test are now respected
(Former versions just ignored the settings of the scissor test.).
For certain cases, this can lead to a substantial performance gain.
Note that this change could, potentially, cause compatibility
problems in the unlikely case that your application uses the
scissor test when invoking CSG rendering, but actually does not want 
scissoring to be active for CSG rendering. The bug fix for this
case is just to disable scissoring.
</p>
<p>
Besides, OpenCSG now uses the new 
<a href="http://sourceforge.net/project/showfiles.php?group_id=104004&amp;package_id=115053">
RenderTexture version 2</a> that has superseded the older version. As before,
I had to apply some minor patches to RenderTexture for correct functionality under
Linux.
</p>
<p>
The interface of OpenCSG has remained unchanged.
</p>
<p>
I have also updated some sections on the web and added a short FAQ section.
</p>

<h3>02-May-2004: OpenCSG version 1.0.0 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-1.0.0.zip">
OpenCSG-1.0.0</a> contains lots of improvements and additions:
</p>
<ul>
  <li>The makefile system for Linux now compiles a shared library.
      The makefiles have been derived by auto-generated makefiles from
      <a href="http://doc.trolltech.com/3.0/qmake.html">qmake</a>, but
      of course, qmake (or Qt) is not required to compile OpenCSG. </li>
  <li>Version 1.0.0 contains lots of further performance improvements in
      case the bounding-box for shapes is set. This includes a performance
      bug fix, i.e., formerly scissoring was set to non-optimal values.
      Also, calculating the depth complexity now also considers the bounding
      box values. </li>
  <li>If available, the GL_TEXTURE_RECTANGLE_NV texture format is now 
      used even in case of power-of-two textures, because this format
      appears to be generally faster. </li>
</ul>
<p>
The interface of OpenCSG has remained unchanged.
</p>

<h3>02-Mar-2004: OpenCSG version 0.9.2 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-0.9.2.zip">
OpenCSG-0.9.2</a> brings some improvements compared to former versions.
First, for occlusion queries the newer OpenGL-extension GL_ARB_occlusion_query
is now supported along with the former GL_NV_occlusion_query extension.
Second, OpenCSG comes with <a href="http://glew.sourceforge.net/">GLEW version 1.2.0</a> now.
</p>

<p>
Compared to former versions of OpenCSG, no external interfaces have been changed,
so your applications using OpenCSG should just continue to work with OpenCSG 0.9.2.
</p>

<h3>04-Feb-2004: Paper on rendering techniques in OpenCSG</h3>

<p>
I have presented the paper <a href="publications.html#wscg">
<strong>Rendering Techniques for Hardware-Accelerated Image-Based CSG</strong></a> 
on the <a href="http://wscg.zcu.cz/wscg2004/wscg2004.htm">WSCG 2004 conference</a>. 
This paper describes the method that OpenCSG uses to transfer the depth information 
in the temporary z-buffer into the main z-buffer using render-to-texture. The paper
describes also how occlusion queries can be used to speed up image-based CSG
rendering. 
</p>

<p>
You can download my <a href="http://www.opencsg.org/data/csg_wscg2004_talk.pdf">talk</a> already; 
The <a href="http://wscg.zcu.cz/wscg2004/Papers_2004_Full/M11.pdf">paper</a> will be available online as soon as
it is published online by the WSCG.
</p>

<h3>22-Nov-2003: OpenCSG version 0.9.1 released</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-0.9.1.zip">
OpenCSG-0.9.1</a> contains a number of improvements and bug fixes.
New features include the ability to work also with the non-standard 
clockwise front-face setting and performance improvements in the case
of constantly changing viewport sizes due to fewer resizes
of the internal pbuffer.
</p>

<p>
Upgrading from version 0.9 to 0.9.1 should be no problem, as the
external interface (and even the hidden internal interfaces)
have not changed. 
</p>

<h3>30-Sep-2003: OpenCSG version 0.9 initial release</h3>

<p>
<a href="http://www.opencsg.org/OpenCSG-0.9.zip">OpenCSG-0.9</a>.
</p>

<hr>

<center><p>
&copy; 2002-2017, Florian Kirsch, e-mail: <b>mail at opencsg dot org</b>, <br>
2002-2005 Hasso-Plattner-Institute Potsdam.<br>
Last change: 18-Sep-2017
</p></center>

</body>
</html>
